package admincow.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import admincow.util.ConexionBD;
import admincow.vo.RegevabeVO;

public class RegevabeDAO {
	
	public RegevabeVO obtenerb(String becerro) {
		System.out.println("Ingresando al obtener becerro");
		RegevabeVO vo = new RegevabeVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			//PreparedStatement stmt = con.prepareStatement();
			ResultSet rs = stmt
					.executeQuery("select RPbecerro,idevento,idusuario,fecha,descripcion from becerro_evento where RPbecerro='" + becerro + "'");
			if (rs.next()) {
				vo.setRPbecerro(rs.getString("RPbecerro"));
				vo.setIdevento(rs.getInt("idevento"));
				vo.setIdusuario(rs.getString("idusuario"));
				vo.setFecha(rs.getString("fecha"));
				vo.setDescripcion(rs.getString("descripcion"));
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	
	public RegevabeVO obtenerv(String vaca) {
		System.out.println("Ingresando al obtener Vaca");
		System.out.println(vaca);
		RegevabeVO vo = new RegevabeVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("select RPvaca,idevento,idusuario,fecha,descripcion from vaca_evento where RPvaca='" + vaca + "'");
			if (rs.next()) {
				vo.setRPvaca(rs.getString("RPvaca"));
				System.out.println(rs.getString("RPvaca"));
				vo.setIdevento(rs.getInt("idevento"));
				System.out.println(rs.getInt("idevento"));
				vo.setIdusuario(rs.getString("idusuario"));
				System.out.println(rs.getString("idusuario"));
				vo.setFecha(rs.getString("fecha"));
				System.out.println(rs.getString("fecha"));
				vo.setDescripcion(rs.getString("descripcion"));
				System.out.println(rs.getString("descripcion"));
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}

	
	
	//
	public Collection<RegevabeVO> obtenerPorRPbecerro(String rpbecerro) {
		String query ="select RPbecerro,idevento,idusuario,fecha,descripcion from becerro_evento where RPbecerro like '%"
			+ rpbecerro + "%'";
	Collection<RegevabeVO> c = new ArrayList<RegevabeVO>();

	try {
		Connection con = ConexionBD.obtenerConexion();
		Statement stmt = con.createStatement();
		ResultSet rs = stmt.executeQuery(query);
		while (rs.next()) {
			RegevabeVO vo = new RegevabeVO();
			vo.setRPbecerro(rs.getString("RPbecerro"));
			vo.setIdevento(rs.getInt("idevento"));
			vo.setIdusuario(rs.getString("idusuario"));
			vo.setFecha(rs.getString("fecha"));
			vo.setDescripcion(rs.getString("descripcion"));
			c.add(vo);
		}
		rs.close();
		stmt.close();
		con.close();
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return c;
	}
	
	
	public Collection<RegevabeVO> obtenerPorRPVaca(String rpbecerro) {
		String query ="select RPvaca,idevento,idusuario,fecha,descripcion from vaca_evento where RPvaca like '%"
			+ rpbecerro + "%'";
	Collection<RegevabeVO> c = new ArrayList<RegevabeVO>();

	try {
		Connection con = ConexionBD.obtenerConexion();
		Statement stmt = con.createStatement();
		ResultSet rs = stmt.executeQuery(query);
		while (rs.next()) {
			RegevabeVO vo = new RegevabeVO();
			vo.setRPvaca(rs.getString("RPvaca"));
			vo.setIdevento(rs.getInt("idevento"));
			vo.setIdusuario(rs.getString("idusuario"));
			vo.setFecha(rs.getString("fecha"));
			vo.setDescripcion(rs.getString("descripcion"));
			c.add(vo);
		}
		rs.close();
		stmt.close();
		con.close();
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return c;
	}
	
	//Envia 
	public RegevabeVO insertarb(RegevabeVO vo) {
		System.out.println("Ingresando al insetar Becerro");
		String query1 = "insert into becerro_evento(idevento,RPbecerro,idusuario,fecha,descripcion) values ( ?,?,?,?,?)";
		System.out.println(query1);
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query1);
			stmt.setInt(1, vo.getIdevento());
			stmt.setString(2, vo.getRPbecerro());
			stmt.setString(3, vo.getIdusuario());
			stmt.setString(4, vo.getFecha());
			stmt.setString(5, vo.getDescripcion());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	
	public RegevabeVO insertarv(RegevabeVO vo) {
		System.out.println("Ingresando al insetar Vaca");
		String query1 = "insert into vaca_evento(idevento,RPvaca,idusuario,fecha,descripcion) values ( ?,?,?,?,?)";
		System.out.println(query1);
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query1);
			stmt.setInt(1, vo.getIdevento());
			stmt.setString(2, vo.getRPvaca());
			stmt.setString(3, vo.getIdusuario());
			stmt.setString(4, vo.getFecha());
			stmt.setString(5, vo.getDescripcion());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	

	public void eliminarb(String becerro) {
		System.out.println("Ingresando al eliminar becerro_evento");
		String query = "DELETE FROM becerro_evento WHERE RPbecerro=?";
		System.out.println(becerro);
		// Table usuario
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			
			stmt.setString(1, becerro);
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo eliminar funcion");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public void eliminarv(String vaca) {
		System.out.println("Ingresando al eliminar vaca_evento");
		String query = "DELETE FROM vaca_evento WHERE RPvaca=?";
		System.out.println(vaca);
		// Table usuario
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			
			stmt.setString(1, vaca);
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo eliminar funcion");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public RegevabeVO actualizarb(RegevabeVO vo) {
		System.out.println("Ingresando al actualizar becerro");
		String query = "update becerro_evento set RPbecerro=?,idusuario=?,fecha=?,descripcion=? where idevento=?";
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getRPbecerro());
			stmt.setString(2, vo.getIdusuario());
			stmt.setString(3, vo.getFecha());
			stmt.setString(4, vo.getDescripcion());
			stmt.setInt(5, vo.getIdevento());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	
	public RegevabeVO actualizarv(RegevabeVO vo) {
		System.out.println("Ingresando al actualizar vaca");
		String query = "update vaca_evento set RPvaca=?,idusuario=?,fecha=?,descripcion=? where idevento=?";
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getRPvaca());
			stmt.setString(2, vo.getIdusuario());
			stmt.setString(3, vo.getFecha());
			stmt.setString(4, vo.getDescripcion());
			stmt.setInt(5, vo.getIdevento());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	
}
